﻿// 3614. 梅森素数.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <map>

using namespace std;
/*
https://www.acwing.com/problem/content/3617/

关于梅森素数。

所谓梅森数，是指形如 2^p−1的一类数，其中指数 p是素数，常记为 M(p)。

如果 p是素数的同时，梅森数（即 2^p−1)也是素数，就称这个梅森数为梅森素数。

输入一个整数 n，输出不大于它的所有梅森素数。

输入格式
一个整数 n。

输出格式
输出比 n 小的所有梅森素数。
`
每行输出一个数据，格式参照样例。

数据范围
1≤n≤231−1
输入样例：
1000
输出样例：
M(2)=3
M(3)=7
M(5)=31
M(7)=127
*/

const int N = 10;

map<int, long long > mm{
    {2, 3},
    {3,7},
    {5,31},
    {7,127},
    {13,8191},
    {17,131071},
    {19,524287},
    {31,2147483647}
};
int n;

int main()
{
    cin >> n;
    for (auto e : mm) {
        if (e.second <= n) {
            cout << "M(" << e.first << ")=" << e.second << endl;
        }
    }

    return 0;
}

